import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

//创建store对象
const store = new Vuex.Store({
	state:{
		//state中存放的全局共享数据
		count: 0
	},
	//mutations进行所有需要改变state的操作
	//mutations禁止所有异步操作，要使异步操作，必须使用actions
	mutations:{
		//加1
		add(state){
			state.count ++
		},
		//加n
		addN(state, num){
			state.count += parseInt(num)
		}
	},
	//actions进行所有异步的操作
	//actions不能对state进行操作，必须通过调用mutations来操作state
	actions:{
		//延时1秒  异步加法
		asyncAdd(context){
			setTimeout(()=>{
				//形参context相当于new出来的store对象，可以用commit 调用mutation
				context.commit('add')
			}, 1000)
		},
		asyncAddN(context, num){
			setTimeout(()=>{
				context.commit('addN', num)
			}, 1000)
		}
	},
	// getter用于对store中的数据进行加工处理，形成新的数据
	// getter类似于 vue中的计算属性
	getters: {
		showCount(state) {
			return '最新的count值：【' + state.count + '】'
		}
	}
})

//输出store对象
export default store